package com.authine.cloudpivot.web.api.controller;

import com.authine.cloudpivot.engine.api.model.runtime.SelectionValue;
import com.authine.cloudpivot.web.api.controller.base.BaseController;
import com.authine.cloudpivot.web.api.dao.XMKXXMapper;
import com.authine.cloudpivot.web.api.service.FescoadQueryService;
import com.authine.cloudpivot.web.api.vo.Recruitmentdemand;
import com.authine.cloudpivot.web.api.vo.Xmkxx;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.*;

import java.text.SimpleDateFormat;
import java.util.*;

@Api(description = "外企德科相关接口", tags = "一期开发")
@RestController
@RequestMapping("/api/fescoadQuery")
@Slf4j
public class FescoadQueryController extends BaseController {

    @Autowired
    private FescoadQueryService fescoadQueryService;

    @Autowired
    private XMKXXMapper xMKXXMapper;

    /**
     *  根据项目的id 查询 城市和门店
     * @param id
     * @return
     */
    @RequestMapping("/selectStoreCity")
    public Object selectStoreCity(String id){


        if (log.isDebugEnabled()) {
            log.debug("查询项目城市111 id={}",id);
        }


        return  fescoadQueryService.selectStoreCity(id);
    }

    /**
     * 项目可行性 审批结束之后，反写数据到 工时类型里
     * 反写的数据  工作项--项目名称  ，工时类型=否  ，项目编号=项目编号  ,工时类型=项目
     * @param objectId
     */
    @GetMapping("/addDatToWorkTime")
    public void addDatToWorkTime(String objectId){

        fescoadQueryService.addDatToWorkTime(objectId);

    }
    /**
     *   批量增加项目可行性
     */
    @Scheduled(cron = "0 */1 * * * ?")
    public String bachInsert(){
        fescoadQueryService.bachInsert();
        return "success";

    }
    /**
     * 项目立项 审批结束之后，更新 工时类型里 工时类型=是  根据项目编号
     * @param projectNo
     */
    @GetMapping("/updateDatToWorkTime")
    public void updateDatToWorkTime(String objectId ,String projectNo){
        //发起流程审批
       fescoadQueryService.startFlow(objectId,"yes");
     fescoadQueryService.updateDatToWorkTime(projectNo);

       //插入数据到组建团队 ，执行明细
        fescoadQueryService.inserData(objectId);

    }
    /** 批量
     * 项目立项 审批结束之后，更新 工时类型里 工时类型=是  根据项目编号
     */
    @GetMapping("/insertXMLX")
    public void insertXMLX(){
        fescoadQueryService.insertXMLX();
    }

    /**
     * 获取项目编号后四位，返回前端
     * @param data
     * @return
     */
    @PostMapping("/getProjectNo")
    public Integer getProjectNo(@RequestBody Map data){
        return fescoadQueryService.getProjectNo(data.get("type")==null?"":data.get("type").toString());
    }


    /**
     * 更新项目编号
     * @param id
     * @param projectNo
     * @param code
     */
    @GetMapping("/updateProjectNo")
    public void updateProjectNo(String id,String projectNo,String code){
        Integer i= 0;
        if(code!= null){
           i= Integer.parseInt(code);
        }
        fescoadQueryService.updateProjectNo(id,projectNo,i );

    }

    /**
     * 更新项目立项和工时类型
     * @param projectNo
     */
    @GetMapping("/updateSubjectStatus")
    public void updateSubjectStatus(String projectNo,String id){
        fescoadQueryService.updateSubjectStatus(projectNo,id);
    }

    /** 批量
     * 更新项目立项和工时类型
     * 废弃-生产环境报错
     */
//    @Scheduled(cron = "0 */1 * * * ?")
    public void updateSubjectStatusX(){
        fescoadQueryService.updateSubjectStatusX();
    }


    /**
     *  任务提交的数据
     * @param id
     */
    @GetMapping("/updateOrInsertTask")
    public void updateOrInsertTask(String id){
        fescoadQueryService.updateOrInsertTask(id);
    }


    /**
     * 店检轮次
     * @param storeRotation
     * @return
     */
    @GetMapping("/getStoreRotation")
    public String getStoreRotation(String storeRotation){
        return fescoadQueryService.getStoreRotation(storeRotation);
    }


    /**
     * 推送项目立项钉钉消息
     * @param id
     * @param subjectName
     */
    @GetMapping("/lxNotification")
    public void lxNotification(String id,String  subjectName){
        log.info("id，subjectName,{}",id+"////"+subjectName);
        fescoadQueryService.lxNotification(id,subjectName);
    }


    /**
     * 批量
     * 推送项目立项钉钉消息
     */
    @GetMapping("/lxNotificationBachInsert")
    public void lxNotificationBachInsert(){
        fescoadQueryService.lxNotificationBachInsert();
    }


    /**
     * 项目作废，更新项目可行性状态
     */
    @GetMapping("/closeSuject")
    public void closeSuject(String id){

        fescoadQueryService.closeSuject(id);
    }

    /** 批量
     * 项目作废，更新项目可行性状态
     */
    @GetMapping("/bachInsertX")
    public void bachInsertX(){
        fescoadQueryService.bachInsertX();
    }


    /**
     * 获取项目可行性编码
     */
    @GetMapping("/getProjectNo")
    public String getProjectNo(String id,String subjectCode){
        log.info("进入这个方法后 获取到的 id={}",id);
        //修改编码
        fescoadQueryService.getSubjectCode(id,subjectCode);
        return "success";
    }

    /**
     *招聘类型为“不确定人数”的招聘需求自动延期90天
     */
    @GetMapping("/recruitment/type")
    public String checkSubjectStatus(String projectName){
        log.info("进入这个方法后 获取到的 projectName={}",projectName);
        //招聘类型为“不确定人数”的招聘需求自动延期90天
        List<Recruitmentdemand> list = fescoadQueryService.checkSubjectStatus(projectName);
        for(Recruitmentdemand recruitmentdemand : list){
            if(recruitmentdemand.getRecruitmentType().equals("不确定人数")){

                SimpleDateFormat format = new   SimpleDateFormat("yyyy-MM-dd");
                Calendar calendar = Calendar.getInstance();
                calendar.setTime(recruitmentdemand.getDemandEndTime());
                calendar.add(Calendar.DATE,90);
                fescoadQueryService.updateTime(recruitmentdemand.getId(),calendar.getTime());
            }
        }
        return "success";
    }

    public static void main(String[] args) {
        new Date();

        System.out.println();
    }

    //每年年底更新项目编码为0
    @Scheduled(cron="59 59 23 31 12 ?")
    public void updateSubjectCode(){
        fescoadQueryService.updateToSubjectNumber();
    }
}
